package com.molichuxing.services.business.service;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.business.dto.request.create.OfflineBizCreateDto;
import com.molichuxing.services.business.dto.request.modify.OfflineAuditBizModifyDto;
import com.molichuxing.services.business.dto.request.modify.OrderScheduleOfflineBizModifyDto;
import com.molichuxing.services.business.dto.response.OfflineAuditInfoBizDto;
import com.molichuxing.services.business.dto.response.OfflineBizDto;
import com.molichuxing.services.business.dto.response.PaymentBizDto;
import com.molichuxing.services.infrastructure.dto.request.modify.OfflineAuditModifyDto;
import com.molichuxing.services.infrastructure.dto.response.PaymentDto;

import java.util.Map;

/**
 * <p>
 * 线下支付组合
 * </p>
 *
 * @author zhaopenghui
 * @since 2019-08-21
 */
public interface OfflineBizService extends RootService {

    /**
     * 线下支付新增
     *
     * @param offlineBizCreateDto
     * @return
     * @throws Exception
     */
    public Boolean createOffline(OfflineBizCreateDto offlineBizCreateDto) throws Exception;

    /**
     * 线下支付审核信息
     *
     * @param orderCode
     * @param scheduleId
     * @return
     * @throws Exception
     */
    public OfflineAuditInfoBizDto getOfflineAuditInfo(Long orderCode, Integer scheduleId) throws Exception;


    /**
     * 根据订单,排期获取线下支付信息
     *
     * @param orderCode
     * @param scheduleId
     * @return
     * @throws Exception
     */
    public OfflineBizDto getOffline(Long orderCode, Integer scheduleId) throws Exception;

    /**
     * 根据订单号获取是否存在未审核的信息
     *
     * @param orderCode
     * @return
     * @throws Exception
     */
    public Boolean getUnAudit(Long orderCode) throws Exception;

    /**
     * 还款审核
     *
     * @param offlineAuditBizModifyDto
     * @return
     * @throws Exception
     */
    public Boolean modifyAuditStatus(OfflineAuditBizModifyDto offlineAuditBizModifyDto, Map<Integer, OrderScheduleOfflineBizModifyDto> orderScheduleModifyDtoMap) throws Exception;

}
